LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Serial-Assistant-by-CSharp

2022/4/16

C#实现串口通信界面

后续想用unity实现软硬件串口通信,先尝试在Rider中C#实现一个串口通信的界面


安装 .NET Framework

在Rider创建项目的时候会发现,有两栏

一栏是 .NET Core,一栏是 .NET Framework

下面大致讲一下它们的差别

前者完全开源,跨平台,没有designer设计界面

后者基于微软,针对Windows,有designer设计界面

之前学习C#是用的 .NET Core,界面开发用 .NET Framework比较方便,有designer


开始安装 .NET Framework,安装链接:https://dotnet.microsoft.com/zh-cn/download/dotnet-framework

选择开发者工具版,一键安装,安装路径如下,安装后可以查看是否安装成功

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework

安装完成之后最好重启一下电脑,不然Rider可能识别不到


重启后在Rider中创建项目,选择 .NET Framework,

选择Type>Windows Forms Application

选择Framework>你刚刚安装的版本

修改项目名、路径创建即可

(System.Threading这个命名空间是 .NET Framework4.0后才有的,版本太低可能创建工程后会报错)


代码实现

C#串口通信主要用到了SerialPort,在System.IO.Ports命名空间下

SerialPort在 .NET Framework中自带了,在 .NET Core开发可能要用NuGet安装一下

NuGet是用于.NET开发平台的软件包管理器,我们需要的包可以在这里下载

在Rider使用NuGet,可以参考官方教程:https://www.jetbrains.com/help/rider/Using_NuGet.html

简单来讲:Alt+7,查找、安装


QT也有类似designer的设计界面,但是以往我都是用代码实现

这是第一次接触designer,还是挺方便的

界面开发参考的是一篇用VS实现的博客,讲的挺详细的

链接:https://blog.csdn.net/ba_wang_mao/article/details/113642066


记录一些自己开发过程的笔记:

1.控件事件代码会自动生成抛出异常代码,需要删掉

throw new System.NotImplementedException(); 

2.下拉框用ComboBox实现,Rider默认是没有显示这个控件的,要在右上角Manage Components设置

3.在界面加载时列举电脑的串口,实现如下,其中也包含了string[]转object[],当然不转也没什么问题。

SerialBox.Items.AddRange(SerialPort.GetPortNames().ToArray<object>());

4.SerialPort使用参考官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport

5.发送和接受文本框采用TextBox,需要设置多行Multiline和竖直翻滚ScrollBars>Vertical

6.接受要注册事件,直接+=函数名

_serial.DataReceived += ReceiveData;

总的开发过程还是和QT很像的,最终实现效果如下:

测试是用一个接受串口数据将原数据发送出来的单片机,收发无误。